/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.torresquintero.oncologos.medico.controlador;

import com.torresquintero.oncologos.common.entityUtilities.PacienteUtilities;
import com.torresquintero.oncologos.common.factory.FactoryEntityManager;
import com.torresquintero.oncologos.entidades.Consulta;
import com.torresquintero.oncologos.entidades.Paciente;
import com.torresquintero.oncologos.enumeraciones.TipoDocumentoEnum;
import com.torresquintero.oncologos.enumeraciones.TipoProcedimietoEnum;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author Camilo Andres
 */
public class BuscarCitasController {
    
     /**
     * Variable statica para el partron Singleton
     */
    private static BuscarCitasController buscarCitasController;
    /**
     * Administrador de entidades.
     */
    private EntityManager em;

    private BuscarCitasController() {
        em=FactoryEntityManager.getEm();
    }
    
    
    
    /**
     * Metodo para obtener una instancia singleton de esta clase.
     * 
     * @return
     */
    public static BuscarCitasController getInstance() {

        if (buscarCitasController == null) {
            buscarCitasController = new BuscarCitasController();
        }
        return buscarCitasController;
    }
    /**
     * MEtodo para buscar un paceinte.
     * @param cedula
     * @param tipoDoc
     * @return 
     */
    public Paciente buscarPaciente(String cedula,TipoDocumentoEnum tipoDoc){
     
        Paciente paciente=PacienteUtilities.buscarPaciente(cedula, tipoDoc);
        //TODO:arreglar esta consulta.
        
        List<Consulta> consultas=em.createQuery("select c from Consulta c where c.paciente=:paciente").
                setParameter("paciente", paciente).getResultList();
       paciente.setConsultas(consultas);
       
       return paciente;
    }
    
    /**
     * metodo para listar las cias por tipo de procedimiento.
     * @param tipoProc
     * @return 
     */
    public List<Consulta> listarConsultasPorProcedimiento(TipoProcedimietoEnum tipoProc){
        
        return em.createNamedQuery(Consulta.FIND_CONSULA_BY_TIPO_PROCEDIMIENTO).
                setParameter(Consulta.PARAMETRO_TIPO_PROCEDIMIENTO, tipoProc).getResultList();
    }
    
}
